Relax requirements for 0-sized data objects in JSON #3170
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Submission Checklist
./runTests.py src/test/unit
make cpplint
Summary
Follow on to #3165, this allows for any variable name to be "validated" if the expected size is
0
.Intended Effect
This is necessary because
{ "foo" : [] }
is a valid JSON for
array[0] tuple(real, real) foo
, but the Stan compiler will request information on"foo.1"
and"foo.2"
which don't exist.How to Verify
Tests were added
Side Effects
If an object has a 0 dimension (e.g. is size 0), then it is technically no longer required to be in the JSON at all. E.g., for
matrix[0, 3] bar
, valid JSONs are now{ "bar" : [] }
,{ "bar" : [[]] }
, and simply{ }
Documentation
Copyright and Licensing
Please list the copyright holder for the work you are submitting (this will be you or your assignee, such as a university or company):
Simons Foundation
By submitting this pull request, the copyright holder is agreeing to license the submitted work under the following licenses: